package com.liuceng.zen.web;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 分页
 * 
 */
public class Page<T> implements Serializable {

  private static final long serialVersionUID = -2053800594583879853L;

  /** 内容 */
  private final List<T> content = new ArrayList<T>();

  /** 总记录数 */
  private final long total;

  /** 分页信息 */
  private final Pageable pageable;
  //

  /**
   * 构造方法
   */
  public Page() {
    this.total = 0L;
    this.pageable = new Pageable();
  }

  /**
   * 构造方法
   * 
   * @param content 内容
   * @param total 总记录数
   * @param pageable 分页信息
   */
  public Page(List<T> content, long total, Pageable pageable) {
    this.content.addAll(content);
    this.total = total;
    this.pageable = pageable;
  }

  /**
   * 获取内容
   * 
   * @return 内容
   */
  public List<T> getContent() {
    return content;
  }

  /**
   * 获取总记录数
   * 
   * @return 总记录数
   */
  public long getTotal() {
    return total;
  }

  /**
   * 获取分页信息
   * 
   * @return 分页信息
   */
  public Pageable getPageable() {
    return pageable;
  }

  /**
   * 获取空分页
   * 
   * @param pageable 分页信息
   * @return 空分页
   */
  public static final <T> Page<T> emptyPage(Pageable pageable) {
    return new Page<T>(Collections.<T>emptyList(), 0L, pageable);
  }

}
